﻿using System.Data;
using Persistencia;

namespace Indexador
{
    public class IndexadorMgr : IIndexadorMgr
    {
        private IEstrategiaIndexado indexador;
        private string _pathIndexador;

        public IndexadorMgr()
        {
            Indexado indexado = new IndexadoPersistence().GetIndexadoActivo();

            switch (indexado.Nombre.ToUpper())
            {
                case "PROPIO":
                    indexador = new IndexadorPropio();
                    break;
                case "LUCENE":
                    indexador = new IndexadorLucene();
                    break;
                default:
                    indexador = new IndexadorPropio();
                    break;
            }

            this._pathIndexador = @indexado.Path_Config;
        }

        public void InicializarIndexador()
        {
            indexador.InicializarIndexador(_pathIndexador);
        }

        public DataSet Realizarbusqueda(string termino)
        {
            DataSet resultados = indexador.Realizarbusqueda(_pathIndexador, termino);
            return resultados;
        }

        public void IndexarElemento(FileSystemElement fileSystemElement)
        {
            indexador.IndexarElemento(_pathIndexador, fileSystemElement);
        }

        public void ModificarElemento(FileSystemElement fseOriginal, FileSystemElement fseNuevo)
        {
            indexador.ModificarElemento(_pathIndexador, fseOriginal, fseNuevo);
        }

        public void EliminarElemento(FileSystemElement fileSystemElement)
        {
            indexador.EliminarElemento(_pathIndexador, fileSystemElement);
        }

    }
}
